Open Source CV入门

1 、OpenCV简介

image-20220217202241894

OpenCV是个什么东西呢?它的全称是Open source Computer Vision Library,开放源代码计算机视觉库,如上图所示我们看到的正是OpenCV的logo,可以看到由鲜明的R、G、B三基色的三个小圆环构成,也就是说,它是一套关于计算机视觉的开放源代码的API函数库。这也就意味着,

(1)不管是科学研究,还是商业应用,都可以利用它来作开发;

(2)所有API函数的源代码都是公开的,你可以看到其内部实现的程序步骤;

(3)你可以修改OpenCV的源代码,编译生成你需要的特定API函数。

在ROSMASTER上的图像处理用到了OpenCV的函数库的某些函数,或者可以说在绝大部分图像处理设计领域都离不开它的存在了,早在许多年前至今在入侵检测、特定目标跟踪、目标检测、人脸检测、人脸识别、人脸跟踪等领域,OpenCV可谓大显身手,而这些,仅仅是其应用的冰山一角。既然我们认识到OpenCV如此的通用,在这章节课程中会给你介绍几种我们我们课程中用到的一些很基础的图像处理函数,也是一些通用的函数,在这里我们先对这些知识大致了解一番后,在后面有颜色识别并追踪、人脸识别并追踪两个实践项目教大家上手,但是OpenCV提供的强大应用功能远不止于此,如果你对Opencv计算机视觉库开发很感兴趣想深入了解的话下面提供了几个网站可供大家参考研究学习:

OpenCV 官方主页:https://www.opencv.org

OpenCV 中文论坛:http://www.opencv.org.cn

OpenCV CSDN 论坛:https://bbs.csdn.net/forums/OpenCV

2、OpenCV图片读取与展示

2.1、图像的读入:

img = cv2.imread('yahboom.jpg', 0) 第一个参数是图片的路径,第二个参数是如何读取这幅图片。

cv2.IMREAD_UNCHANGED:保持原格式不变,-1;

cv2.IMREAD_GRAYSCALE:以灰度模式读入图片,可以用0表示;

cv2.IMREAD_COLOR:,读入一副彩色图片,可以用1表示;默认值

cv2.IMREAD_UNCHANGED:读入一幅图片,并包括其alpha通道,可以用2表示。

2.2、图像展示

cv.imshow('frame', frame):打开一个窗口名为frame,并且显示frame帧数据(图像/视频数据)

参数含义:

第一个参数表示创建打开的窗口的名字

第二个参数表示需要显示的图片

2.3、代码与实际效果展示

运行程序

程序运行之后,效果图:

image-20240123155730268

3、OpenCV图片写入

3.1、函数方法:cv2.imwrite('new_img_name', img)

参数含义:

第一个参数是保存的文件名

第二个参数是保存的图像

3.2、代码与实际效果展示

运行程序,

程序运行之后,效果图

image-20240123155924108

4、OpenCV摄像头读取与显示视频

4.1、摄像头读取

capture=cv.VideoCapture(0)

参数含义:

VideoCapture()中参数是0,表示打开笔记本的内置摄像头,参数是视频文件路径则打开视频,如cap = cv2.VideoCapture(“../test.avi”)

4.2、显示摄像头视频

ret,img = frame.read()

返回值含义:

ret:ret是一个bool值,判断是否读回正确的帧

img:每一帧的图像数据

4.3、代码与实际效果展示

运行程序

程序运行之后,显示摄像头画面,

image-20240123160115576

5、OpenCV像素操作

5.1、像素操作,我们可以给任意位置改成新的像素颜色。

首先,我们先要读取图像,然后修改bgr的数值,赋值一个区域为黑色。

5.2、代码与实际效果展示

运行程序

程序运行之后,效果图

image-20240123160253808

红色框部分就是修改的色素值。